「★★★(三つ星)オープンデータ」は 「誰もが自由に使えて再利用でき、かつ再配布できるデータ」 というオープンデータの理想を満たしたデータといえます.
しかし,オープンデータへの期待はG8オープンデータ憲章にあるように活用の観点を含んでいます.
無料の政府データは、人々がより快適な現代生活を送るための手段や製品を作るために活用することが出来、ひいては、民間部門での改革のための触媒となり、新規の市場、ビジネス及び雇用を創出することを支援する。我々は、オープンデータが、イノベーションと繁栄を可能にし、また、市民のニーズに合致した、強固かつ相互に繋がった社会を構築していくための大きな可能性をもった未開発の資源であることに合意する。(G8 オープンデータ憲章より)
では,どういったデータであれば活用できるのでしょうか. G8オープンデータ憲章には「ハイバリューデータ・セット」という定義が示されています.これらのデータは活用の見込みがあるデータとして考えられています.
| データカテゴリ | データセット例 |
|---|---|
| 企業 | 企業/事業者の登記情報 |
| 犯罪と司法 | 犯罪統計、安全 |
| 地球観測 | 気象/天候、農業、林業、水産業及び狩猟 |
| 教育 | 学校のリスト; 学校の業績、デジタルスキル |
| エネルギーと環境 | 汚染レベル、エネルギー消費 |
| 財政と契約 | 取引支出、賃貸契約、入札需要、将来入札、地方公共団体予算、国家予算(執行計画及び決算) |
| 地理空間 | 地勢、郵便番号、国の地図、地方(機関)の地図 |
| 国際開発 | 援助、食料安全保障、資源採掘、土地 |
| 政府の説明責任と民主主義 | 政府の窓口,選挙結果、法律及び規則、給与(給与水準)、福利厚生/贈与 |
| 健康 | 処方箋データ、実績データ |
| 科学と研究 | ゲノムデータ、研究及び教育活動、実験結果 |
| 統計 | 全国統計、国勢調査、社会基盤、財産、スキル |
| 社会的流動性と福祉 | 居住、健康保険及び失業手当給付金 |
| 交通とインフラ | 公共交通機関の時刻表、アクセスポイント、 ブロードバンドの普及度 |
ref. http://www.kantei.go.jp/jp/singi/it2/densi/dai4/sankou8.pdf
今回はこの中の「地球観測」データの可視化にトライしてみましょう.
今回はアメリカ地質調査所(United States Geological Survey; USGS) のEarthquake Hazards Program(https://earthquake.usgs.gov/earthquakes/)のデータを可視化します.USGSのサイトでも可視化されていますが,自前で可視化してみます.
まず,サイトにアクセスします.
下方にスクロールします.
「Real-time Feeds and Notifications」をクリックします.
下方にスクロールします.
「Spreadsheet Format」をクリックします.
画面右下の「Past 30 Days」の「All Earthquakes」をクリックしてデータをダウンロードします.
ダウンロードしたデータを可視化しましょう.
いつものようにライブラリを読み込み,フォントを設定します.
#ライブラリの読み込み.なければインストールする.
if(!require(ggplot2)){
install.packages("ggplot2")
library(ggplot2)
}
#游ゴシック体を使う
if(.Platform$OS.type=="windows")
windowsFonts(yugo=windowsFont("Yu Gothic"))
if(capabilities("aqua"))
quartzFonts(yugo=quartzFont(rep("YuGo-Medium",4)))ダウンロードしたデータはCSV形式なので read.csv 関数でデータを読み込みます.
csv<-read.csv("all_month.csv",stringsAsFactors = FALSE)
#行数を確認する
nrow(csv)## [1] 7704
#データ構造を確認する
str(csv)## 'data.frame': 7704 obs. of 22 variables:
## $ time : chr "2016-11-11T14:31:16.940Z" "2016-11-11T13:49:36.060Z" "2016-11-11T13:48:07.570Z" "2016-11-11T13:47:51.330Z" ...
## $ latitude : num 17.8 38.7 38.7 38.8 38.8 ...
## $ longitude : num -65.6 -122.7 -122.7 -122.7 -122.7 ...
## $ depth : num 13.77 1.3 1.13 1.43 -0.53 ...
## $ mag : num 4.1 3.38 1.35 1.63 1.84 1.62 0.77 1.5 0.71 2.4 ...
## $ magType : chr "ml" "ml" "md" "md" ...
## $ nst : int NA 58 11 5 13 12 17 NA 17 9 ...
## $ gap : num 50 41 130 216 73 ...
## $ dmin : num 0.416 0.0187 0.0197 0.0142 0.018 ...
## $ rms : num 1.01 0.08 0.02 0.01 0.04 0.05 0.17 0.57 0.19 0.1 ...
## $ net : chr "us" "nc" "nc" "nc" ...
## $ id : chr "us100076wa" "nc72723635" "nc72723630" "nc72723625" ...
## $ updated : chr "2016-11-11T14:51:07.522Z" "2016-11-11T14:48:02.237Z" "2016-11-11T14:47:02.235Z" "2016-11-11T14:36:02.211Z" ...
## $ place : chr "36km SE of Emajagua, Puerto Rico" "5km ESE of The Geysers, California" "5km SE of The Geysers, California" "5km ESE of The Geysers, California" ...
## $ type : chr "earthquake" "earthquake" "earthquake" "earthquake" ...
## $ horizontalError: num 5.1 0.16 0.44 1.84 0.24 0.32 0.46 NA 0.47 0.7 ...
## $ depthError : num 7.3 0.34 0.66 1.59 0.89 0.56 0.92 0.4 0.79 0.5 ...
## $ magError : num 0.057 0.345 0.35 0.26 0.16 0.11 0.187 NA 0.148 0 ...
## $ magNst : int 41 17 7 5 10 9 20 NA 12 7 ...
## $ status : chr "reviewed" "automatic" "automatic" "automatic" ...
## $ locationSource : chr "us" "nc" "nc" "nc" ...
## $ magSource : chr "us" "nc" "nc" "nc" ...
#データの要約を確認する
summary(csv)## time latitude longitude depth
## Length:7704 Min. :-63.59 Min. :-179.9 Min. : -3.35
## Class :character 1st Qu.: 36.00 1st Qu.:-149.2 1st Qu.: 2.91
## Mode :character Median : 38.83 Median :-122.7 Median : 8.10
## Mean : 42.41 Mean :-117.7 Mean : 23.34
## 3rd Qu.: 60.01 3rd Qu.:-116.7 3rd Qu.: 17.00
## Max. : 85.60 Max. : 179.8 Max. :653.46
##
## mag magType nst gap
## Min. :-0.750 Length:7704 Min. : 2.00 Min. : 12.0
## 1st Qu.: 0.820 Class :character 1st Qu.: 8.00 1st Qu.: 69.0
## Median : 1.300 Mode :character Median : 14.00 Median :103.0
## Mean : 1.554 Mean : 18.46 Mean :119.8
## 3rd Qu.: 1.980 3rd Qu.: 24.00 3rd Qu.:151.8
## Max. : 6.900 Max. :207.00 Max. :356.4
## NA's :11 NA's :2560 NA's :1882
## dmin rms net id
## Min. : 0.0003 Min. :0.0000 Length:7704 Length:7704
## 1st Qu.: 0.0190 1st Qu.:0.0800 Class :character Class :character
## Median : 0.0589 Median :0.1900 Mode :character Mode :character
## Mean : 0.4248 Mean :0.3032
## 3rd Qu.: 0.1709 3rd Qu.:0.4700
## Max. :31.4810 Max. :2.0900
## NA's :2670 NA's :5
## updated place type horizontalError
## Length:7704 Length:7704 Length:7704 Min. : 0.070
## Class :character Class :character Class :character 1st Qu.: 0.250
## Mode :character Mode :character Mode :character Median : 0.400
## Mean : 1.332
## 3rd Qu.: 0.820
## Max. :27.100
## NA's :715
## depthError magError magNst status
## Min. : 0.000 Min. :0.0000 Min. : 0.00 Length:7704
## 1st Qu.: 0.370 1st Qu.:0.0900 1st Qu.: 4.00 Class :character
## Median : 0.700 Median :0.1500 Median : 8.00 Mode :character
## Mean : 2.818 Mean :0.1681 Mean : 17.01
## 3rd Qu.: 1.900 3rd Qu.:0.2200 3rd Qu.: 18.00
## Max. :124.400 Max. :1.5700 Max. :658.00
## NA's :154 NA's :2847 NA's :2704
## locationSource magSource
## Length:7704 Length:7704
## Class :character Class :character
## Mode :character Mode :character
##
##
##
##
リアルタイムデータなので内容はそのときどきで変わってきます.それでは緯度(latitude),経度(longitude)を使って散布図を描いてみましょう.
#x軸を経度,y軸を緯度とする
g<-ggplot(csv,aes(x=longitude,y=latitude))
#散布図
g<-g+geom_point()
g<-g+theme_bw(base_family = "yugo")
g<-g+ggtitle("USGS Earthquake Hazards Programデータの可視化")
g<-g+ylab("緯度")+xlab("経度")
gなんかそれらしく可視化できました.
もうすこしデータを精査してみましょう.
#マグニチュードの要約を確認する
summary(csv$mag)## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -0.750 0.820 1.300 1.554 1.980 6.900 11
どうやら欠損値が含まれているようです.これを削除しましょう.
#行数を確認する
nrow(csv)## [1] 7704
#マグニチュードがNAである行を削除する(NAでない行を抽出する)
csv2<-csv[is.na(csv$mag)==FALSE,]
summary(csv2$mag)## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -0.750 0.820 1.300 1.554 1.980 6.900
nrow(csv2)## [1] 7693
それではもう一度可視化してみましょう.
#すべての地震をプロット
g<-ggplot(csv2,aes(x=longitude,y=latitude))
g<-g+geom_point()
g<-g+theme_bw(base_family = "yugo")
g<-g+ggtitle("USGS Earthquake Hazards Programデータの可視化")
g<-g+ylab("緯度")+xlab("経度")
gこれで地震発生場所の可視化はできました.
つぎは地震の規模,マグニチュードの可視化にトライします. 例えば散布図の点の色をマグニチュードで表現してみましょう.
#すべての地震をプロット(色でマグニチュードを表現)
g<-ggplot(csv2,aes(x=longitude,y=latitude,color=mag))
g<-g+geom_point()
g<-g+theme_bw(base_family = "yugo")
g<-g+ggtitle("USGS Earthquake Hazards Programデータの可視化")
g<-g+ylab("緯度")+xlab("経度")
g色が気に入らない場合は scale_color_continuous 関数を用いることでカスタマイズできます. 色のRGB値等についてはAdobe Color CC(https://color.adobe.com)等で調べてください.
#すべての地震をプロット(色でマグニチュードを表現,色をカスタマイズ)
g<-ggplot(csv2,aes(x=longitude,y=latitude,color=mag))
g<-g+geom_point()
g<-g+theme_bw(base_family = "yugo")
g<-g+ggtitle("USGS Earthquake Hazards Programデータの可視化")
g<-g+ylab("緯度")+xlab("経度")
#マグニチュードが低い場合は黄色,高い場合は赤とする
g<-g+scale_color_continuous(low="#FFFF00",high="#FF0000")
g上記の場合はRGB値を16進数で「#RRGGBB」という書式を用いて表現しています.
つぎにマグニチュードを色に加えて点の大きさで表現してみます.
#すべての地震をプロット(色とサイズでマグニチュードを表現,色をカスタマイズ)
g<-ggplot(csv2,aes(x=longitude,y=latitude,color=mag,size=mag))
g<-g+geom_point()
g<-g+theme_bw(base_family = "yugo")
g<-g+ggtitle("USGS Earthquake Hazards Programデータの可視化")
g<-g+ylab("緯度")+xlab("経度")
#マグニチュードが低い場合は黄色,高い場合は赤とする
g<-g+scale_color_continuous(low="#FFFF00",high="#FF0000")
g点のサイズは scale_size_continuous 関数を指定することで変更できます.
#すべての地震をプロット(色とサイズでマグニチュードを表現,色をカスタマイズ,サイズをカスタマイズ)
g<-ggplot(csv2,aes(x=longitude,y=latitude,color=mag,size=mag))
g<-g+geom_point()
g<-g+theme_bw(base_family = "yugo")
g<-g+ggtitle("USGS Earthquake Hazards Programデータの可視化")
g<-g+ylab("緯度")+xlab("経度")
#マグニチュードが低い場合は黄色,高い場合は赤とする
g<-g+scale_color_continuous(low="#FFFF00",high="#FF0000")
#点のサイズを0から15の範囲とする
g<-g+scale_size_continuous(range=c(0,15))
g色とサイズを変更することで,何もしないよりは地震の規模がみえるようになりましたが,今度はデータが多すぎて見にくい感じになってしまいました.
可視化するデータを少し整理してみましょう.
#マグニチュードを小数点以下で四捨五入し,集計する
table(round(csv$mag,0))##
## -1 0 1 2 3 4 5 6 7
## 5 945 3499 2179 484 307 243 28 3
四捨五入後でマグニチュード4以上とすると, 大部可視化データを減らすことができそうです.
scale_size_continuous の limits を指定することで可視化対象のデータを減らしてみます.
#すべての地震をプロット(色とサイズでマグニチュードを表現,色をカスタマイズ,サイズをカスタマイズ)
g<-ggplot(csv2,aes(x=longitude,y=latitude,color=mag,size=mag))
g<-g+geom_point()
g<-g+theme_bw(base_family = "yugo")
g<-g+ggtitle("USGS Earthquake Hazards Programデータの可視化")
g<-g+ylab("緯度")+xlab("経度")
#マグニチュードが低い場合は黄色,高い場合は赤とする
g<-g+scale_color_continuous(low="#FFFF00",high="#FF0000")
#点のサイズを0から15の範囲とする,4以上7以下のマグニチュードは範囲外とする
g<-g+scale_size_continuous(range=c(0,15),limits = c(4,7))
gサイズでの制約ができましたが,色での制約ができていないので, 違いがわかりにくくなっています.
limits の指定は scale_color_continuousでも可能なのでこちらでも設定します.
#すべての地震をプロット(色とサイズでマグニチュードを表現,色をカスタマイズ,サイズをカスタマイズ)
g<-ggplot(csv2,aes(x=longitude,y=latitude,color=mag,size=mag))
g<-g+geom_point()
g<-g+theme_bw(base_family = "yugo")
g<-g+ggtitle("USGS Earthquake Hazards Programデータの可視化")
g<-g+ylab("緯度")+xlab("経度")
#マグニチュードが低い場合は黄色,高い場合は赤とする,4以上7以下のマグニチュードは範囲外とする
g<-g+scale_color_continuous(low="#FFFF00",high="#FF0000",limits = c(4,7))
#点のサイズを0から15の範囲とする,4以上7以下のマグニチュードは範囲外とする
g<-g+scale_size_continuous(range=c(0,15),limits = c(4,7))
gこれで少しは見やすくなりました.
可視化データの整理手法は limits の指定以外にも subsetを使う手法もあります(こちらのほうが分かりやすいかもしれません).
#マグニチュードが4以上の行を抽出する
csv3<-subset(csv2,csv2$mag>=4)
#マグニチュード4以上の地震をプロット(色とサイズでマグニチュードを表現)
g<-ggplot(csv3,aes(x=longitude,y=latitude,color=mag,size=mag))
g<-g+geom_point()
g<-g+theme_bw(base_family = "yugo")
g<-g+ggtitle("USGS Earthquake Hazards Programデータの可視化")
g<-g+ylab("緯度")+xlab("経度")
#マグニチュードが低い場合は黄色,高い場合は赤とする
g<-g+scale_color_continuous(low="#FFFF00",high="#FF0000")
#点のサイズを0から15の範囲とする
g<-g+scale_size_continuous(range=c(0,15))
g今度は地震の深さを可視化します.「浅い地震」とか「深い地震」とかの表現で使う地震の指標の一つです.マグニチュードが高かい地震であっても,発生箇所が深ければ地表での揺れはそれほど大きくなりません.
ここではマグニチュードを点のサイズ,深度を色で表現することにします.
#マグニチュードが4以上の行を抽出する
csv3<-subset(csv2,csv2$mag>=4)
#マグニチュード4以上の地震をプロット(色で深度,サイズでマグニチュードを表現)
g<-ggplot(csv3,aes(x=longitude,y=latitude,color=depth,size=mag))
g<-g+geom_point()
g<-g+theme_bw(base_family = "yugo")
g<-g+ggtitle("USGS Earthquake Hazards Programデータの可視化")
g<-g+ylab("緯度")+xlab("経度")
#点のサイズを0から15の範囲とする
g<-g+scale_size_continuous(range=c(0,15))
g色をカスタマイズします. 先程は16進数でRGBを指定しましたが,今度は rgb 関数を使って色を表現しています. rgb 関数は各色レベルを0から1の範囲で表現します.
#マグニチュードが4以上の行を抽出する
csv3<-subset(csv2,csv2$mag>=4)
#マグニチュード4以上の地震をプロット(色で深度,サイズでマグニチュードを表現)
g<-ggplot(csv3,aes(x=longitude,y=latitude,color=depth,size=mag))
g<-g+geom_point()
g<-g+theme_bw(base_family = "yugo")
g<-g+ggtitle("USGS Earthquake Hazards Programデータの可視化")
g<-g+ylab("緯度")+xlab("経度")
#深度が浅ければ暗く,深ければ明るくする
g<-g+scale_color_continuous(high=rgb(0,0.21,0.26),low=rgb(0.43,0.99,1))
#点のサイズを0から15の範囲とする
g<-g+scale_size_continuous(range=c(0,15))
g上記の可視化手法でいくと,暗く大きい点となっている地震が揺れの強い地震となります.
せっかくなので,散布図を世界地図上に展開してみましょう.
ggplot2 にはもともと世界地図を描画するための関数が組み込まれています. 今回はこの機能を使って地震データを可視化してみましょう.
まず,世界地図だけを表示しています.
ggplot()+borders("world")簡単ですね.fill を指定すれば色塗りも可能です.
ggplot()+borders("world",fill = "gray60")では先程の可視化結果を世界地図上に載せてみましょう.
#マグニチュード4以上の地震をプロット(色で深度,サイズでマグニチュードを表現)
g<-ggplot(csv3,aes(x=longitude,y=latitude,color=depth,size=mag))
g<-g+geom_point()
g<-g+borders("world")
g<-g+theme_bw(base_family = "yugo")
g<-g+ggtitle("USGS Earthquake Hazards Programデータの可視化")
g<-g+ylab("緯度")+xlab("経度")
#深度が浅ければ暗く,深ければ明るくする
g<-g+scale_color_continuous(high=rgb(0,0.21,0.26),low=rgb(0.43,0.99,1))
#点のサイズを0から15の範囲とする
g<-g+scale_size_continuous(range=c(0,15))
gあとは微調整の範囲内です.可視化結果が見やすくなるよう,色やサイズを変更してみましょう.
#マグニチュード4以上の地震をプロット(色で深度,サイズでマグニチュードを表現)
g<-ggplot(csv3,aes(x=longitude,y=latitude,color=depth,size=mag))
g<-g+geom_point()
g<-g+borders("world")
g<-g+theme_bw(base_family = "yugo")
g<-g+ggtitle("USGS Earthquake Hazards Programデータの可視化")
g<-g+ylab("緯度")+xlab("経度")
#深度が浅ければ暗く,深ければ明るくする
g<-g+scale_color_continuous(high=rgb(1,0,0),low=rgb(1,1,0))
#点のサイズを0から6の範囲とする
g<-g+scale_size_continuous(range=c(0,6))
gまだ気になる箇所はありますが,ハザードマップ的な可視化はできた感じです.
USGS Earthquake Hazards Programでは データの条件検索機能も提供しています.この機能を使うと過去のデータを可視化することもできるようになります.
それではさっそく東日本大震災の発生日のデータを取得してみましょう.
http://earthquake.usgs.gov/earthquakes/search/
検索条件には「マグニチュード(Magnitude)」や「日付と時間(Date & Time)」等を指定できます.出力方法も「KML」,「CSV」等から選ぶことができます.
ここでは,3月11日0:00から3月12日0:00までに発生したマグニチュード1以上の地震データを取得します.
あとはこれまでどおりのやり方で可視化します.
※下記コードではファイル名を「query.csv」から「20110311JSTquery.csv」に変更しています.
csv<-read.csv("20110311JSTquery.csv",stringsAsFactors = FALSE)
#マグニチュード4以上の地震をプロット(色で深度,サイズでマグニチュードを表現)
g<-ggplot(csv,aes(x=longitude,y=latitude,color=depth,size=mag))
g<-g+geom_point()
g<-g+borders("world")
g<-g+theme_bw(base_family = "yugo")
g<-g+ggtitle("USGS Earthquake Hazards Programデータの可視化")
g<-g+ylab("緯度")+xlab("経度")
#深度が浅ければ暗く,深ければ明るくする
g<-g+scale_color_continuous(high=rgb(1,0,0),low=rgb(1,1,0))
#点のサイズを0から15の範囲とする
g<-g+scale_size_continuous(range=c(0,6))
gなお,borders 関数は世界地図以外も描画可能です.例えば以下のようにすると日本地図を描画できます.
ggplot()+borders(database="world",regions = "japan")borders 関数の戻り値を確認すると地図描画のためのデータが格納されているのがわかります.
#一旦変数に戻り値を受ける
jap <- borders("world","japan")
#構造を確認する
str(jap)## Classes 'LayerInstance', 'Layer', 'ggproto' <ggproto object: Class LayerInstance, Layer>
## aes_params: list
## compute_aesthetics: function
## compute_geom_1: function
## compute_geom_2: function
## compute_position: function
## compute_statistic: function
## data: data.frame
## draw_geom: function
## geom: <ggproto object: Class GeomPolygon, Geom>
## aesthetics: function
## default_aes: uneval
## draw_group: function
## draw_key: function
## draw_layer: function
## draw_panel: function
## extra_params: na.rm
## handle_na: function
## non_missing_aes:
## parameters: function
## required_aes: x y
## setup_data: function
## use_defaults: function
## super: <ggproto object: Class Geom>
## geom_params: list
## inherit.aes: FALSE
## layer_data: function
## map_statistic: function
## mapping: uneval
## position: <ggproto object: Class PositionIdentity, Position>
## compute_layer: function
## compute_panel: function
## required_aes:
## setup_data: function
## setup_params: function
## super: <ggproto object: Class Position>
## print: function
## show.legend: NA
## stat: <ggproto object: Class StatIdentity, Stat>
## compute_group: function
## compute_layer: function
## compute_panel: function
## default_aes: uneval
## extra_params: na.rm
## non_missing_aes:
## parameters: function
## required_aes:
## retransform: TRUE
## setup_data: function
## setup_params: function
## super: <ggproto object: Class Stat>
## stat_params: list
## subset: NULL
## super: <ggproto object: Class Layer>
head(jap$data)## long lat group order region subregion
## 1 123.8887 24.28013 1 1 Japan Iriomote Jima
## 2 123.8256 24.26606 1 2 Japan Iriomote Jima
## 3 123.7498 24.28330 1 3 Japan Iriomote Jima
## 4 123.6807 24.28804 1 4 Japan Iriomote Jima
## 5 123.6798 24.31777 1 5 Japan Iriomote Jima
## 6 123.7523 24.34849 1 6 Japan Iriomote Jima
summary(jap$data)## long lat group order
## Min. :123.7 Min. :24.27 Min. : 1.00 Min. : 1.0
## 1st Qu.:130.5 1st Qu.:32.93 1st Qu.:19.00 1st Qu.: 293.0
## Median :134.7 Median :34.53 Median :30.00 Median : 578.0
## Mean :135.3 Mean :35.47 Mean :24.19 Mean : 572.2
## 3rd Qu.:140.1 3rd Qu.:38.92 3rd Qu.:30.00 3rd Qu.: 852.0
## Max. :145.8 Max. :45.51 Max. :34.00 Max. :1130.0
## region subregion
## Length:1097 Length:1097
## Class :character Class :character
## Mode :character Mode :character
##
##
##
#描画する
ggplot()+jap#データを直接指定する場合はgeom_pathやgeom_polygonを指定します.group指定を忘れないようにしてください(group指定を忘れると描画が崩れる).
ggplot(jap$data,aes(x=long,y=lat,group=group))+geom_path()ggplot(jap$data,aes(x=long,y=lat,group=group))+geom_polygon()地震データの緯度・経度範囲を絞れば地域を限定した可視化も可能です.
オープンデータには データはオープンであるべきという思想以上にデータ活用への期待があります. G8オープンデータ憲章にある「ハイバリューデータ・セット」はまさにその期待が込められたデータ種類といえます.今回は「ハイバリューデータ・セット」の一つである「地球観測データ」の可視化に挑戦しました.それほど複雑なことはしていませんが「ハイバリューデータ・セット」の可能性は感じ取ってもらえたのではないでしょうか.次回も引き続き「地震データ」の可視化を取り上げます.
以下の問題を解いてください. その際に用いたRスクリプトファイル,結果として得られた画像ファイル, 可視化に用いたデータファイルをZIPでまとめて提出してください.
※Rスクリプトファイルは可視化毎に作成してください.可視化に必要な内容のみを含めるようにしてください.
ヒント:
可視化例:
ヒント:
borders 関数のregionsを指定すると国単位の地図を描画できます.
borders(database = "world",regions = "japan")
borders(database = "world",regions = "china")subset 関数で特定の領域で発生した地震データを抽出します.
tmp<-subset(csv,(csv$longitude < maxlong & csv$longitude > minlong)&(csv$latitude < maxlat & csv$latitude > minlat))borders 関数から得られたデータから領域を取得するには例えば以下のようにします.
maxlong<-max(borders("world","japan")$data$long)
minlong<-min(borders("world","japan")$data$long)可視化例:
Masaharu Hayashi を著作者とするこの 作品 は クリエイティブ・コモンズの 表示 4.0 国際 ライセンスで提供されています。